import Vue from 'vue'
import Vuex from 'vuex'
import { mutations } from './mutations'
import actions from './actions'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    hasTheUnitIncreaStatus: 0,////平台入驻流程v1.7.0-单位列表页面的单位是否有新增
    switchCompId: 0,//平台单位切换主键值更新
    count: 123,
    sideNav: [],
    roleInfo: {
      nav: {},
      num: 0,
      topNav: {}
    },
    editDesignInfoCount: 0,//项目设计与分解-左边树-编辑设计信息-确定的次数
    nodeCount: 0,
    // 激活状态的路由列表
    activeTabsList: [],
    // 所在页面的路由
    activeTab: '',
    menuTree: [],
    decomTree: [],
    userInfo: {},
    // 组织管理树
    orgainzationTree: [],
    // 左侧菜单是否折叠
    isLeftNavCollapse: false,
    // 左侧菜单是否隐藏
    isLeftNavHidden: false,
    // 页面大小
    pageSize: {},
    // 用户权限列表
    userAuth: [],
    // 当前页面权限
    pageAuth: {},
    // 滚动距离
    scrollTop: {},
    // 项目id列表
    projectIdList: [],
    // 项目列表
    projectList: [],
    permissionTree: {},
    projectInfo: {},
    getBuildOrg: {},//建立组织
    getJoinOrg: {},//加入组织
    changeOrgOrStation: {},//切换组织或岗位
    zhgdConSituatDetailObj: {},//智慧工地接入情况的详情
    // 已选中的项目对象
    choosedProject: {},
    // 已选择的项目列表
    choosedProjectList: {
      list: []
    },
    // 是否显示完善资料弹框
    userInfoDialogVisible: false,
    // 选中的经纬度
    choosedLat: '120.00',
    // 选择经纬度弹框是否可见
    chooseLatDialogVisible: false,
    // 文档树
    projectFileTree: [],
    // 用户菜单-完整对象
    userMenu: [],
    // 是否显示顶部菜单
    showTop: true,
    // 是否显示左侧菜单
    showLeft: true
  },
  getters: {
    countNum: state => {
      return state.count
    },
    topNavList: state => {
      return state.roleInfo
    },
    // 判断按钮/子页面/组件是否有权限
    getComponentAuth: (state) => (name) => {
      // console.log('9099999state=', state, 'name=', name)
      let childAuthList = state.pageAuth.children_list || []
      // console.log('childAuthList=', childAuthList)
      let hasAuth = childAuthList.find((item) => {
        return item.object_no === name
      })
      return Boolean(hasAuth)
    },
    getActiveTabList: (state) => {
      return state.activeTabsList
    },
    getLatlnt: (state) => {
      return state.choosedLat
    }
  },
  actions,
  mutations
})
